package com.mybatis.lo.model;

import java.util.HashMap;
import java.util.Map;

import lombok.Getter;

/**
 * 对于SqlNode执行过程中需要的信息进行统一封装传递，对于解析之后的SQL语句进行拼接。
 * @author zhangbh
 * 2023-06-08 08:42
 **/
public class DynamicContext {

    private static final String PARAM_KEY = "_param";

    private final StringBuffer sb = new StringBuffer();
    @Getter
    private final Map<String, Object> bindings = new HashMap<>();

    public DynamicContext(Object param) {
        bindings.put(PARAM_KEY, param);
    }

    /**
     * 获取查询参数
     * @return 查询参数
     */
    public Object getParam() {
        return bindings.get(PARAM_KEY);
    }

    /**
     * 当前上下文追加sql
     * @param sql sql
     */
    public void append(String sql) {
        // 兼容一个空格
        sb.append(sql).append(" ");
    }

    public String getSql() {
        return sb.toString();
    }
}
